//字符宽度校验
export function isSerial(value) {
  if (value > 10 || value <= 0 || !/^[\u4e00-\u9fa5_0-9]+$/.test(value)) {
    return false
  } else {
    return true
  }
}

//树形上级父节点名称
export function supParent(node, parentName) {
  if (node.parent !== null && node.parent.data.location !== undefined) { //是否存在父节点
    parentName.push(node.parent.data.location); //存在父节点，获取节点名称添加到数组
    supParent(node.parent, parentName) //递归调用
  }else if(node.parent !== null && node.parent.data.sortName !== undefined){
	  supParent(node.parent, parentName) //递归调用
  }
  return parentName
}

//树形不包含1级父节点名称
export function supNoParent(node, parentName) {
  if (node.parent !== null && node.parent.data.location !== undefined &&node.parent.data.parentId !== 0) { //是否存在父节点
    parentName.push(node.parent.data.location); //存在父节点，获取节点名称添加到数组
    supNoParent(node.parent, parentName) //递归调用
  }
  return parentName
}

//获取树形当前选中节点
export function getCurrentNode(node, nodeArr) {
  return new Promise((resolve, reject) => {
    if (node.parent !== null) {
      nodeArr.push(node);
      getCurrentNode(node.parent, nodeArr)
    }
    resolve(nodeArr)
  })
}

//筛选树节点状态
export function setCurrentNode(node, currentNode) {
  selectNode(node, currentNode)
}

function selectNode(treeNode, currentNode) {
  if (treeNode.childNodes !== 0) {
    treeNode.childNodes.forEach(value => {
      if (value.childNodes.length !== 0) {
        selectNode(value, currentNode)
      }
      if (currentNode.indexOf(value) > -1) { //遍历节点是否包含点击的节点，包含则改变树组件本身属性
        value.isCurrent = true;
      } else {
        value.isCurrent = false;
      }

    })
  }

}

//处理数据字段children为0时设为undefined，用于弹框选择分类回显bug
export function getTreeData(data) {
  for (let i = 0; i < data.length; i++) {
    if (data[i].children.length < 1) {
      // children若为空数组，则将children设为undefined
      data[i].children = undefined;
    } else {
      // children若不为空数组，则递归调用 本方法
      getTreeData(data[i].children);
    }
  }
  return data;
}
